#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        //1. 对角翻转
        int i = 1;
        for(auto row=0;row<matrix.size();row++)
        {
            for(auto column=0;column<=row;column++){
                swap(matrix[row][column],matrix[column][row]);
                // swap(matrix[0][0],matrix[0][0])
                // swap(1,1)

                // swap(matrix[1][0],matrix[0][1])
                // swap(4,2)
                // swap(matrix[1][1],matrix[1][1])
                // swap(5,5)

                // swap(matrix[2][0],matrix[0][2])
                // swap(7,3)
                // swap(matrix[2][1],matrix[1][2])
                // swap(8,6)
                // swap(matrix[2][2],matrix[2][2])
                // swap(9,9)

//                cout << "第" << i << "次循环结束：" << endl;
//                this->printArray(matrix);
//                cout << "-----------------" << endl;
//                i++;
            }
        }
        cout << "对角反转后：" << endl;
        this->printArray(matrix);
        cout << "-----------------" << endl;
        cout << "镜像反转后为最终效果：" << endl;
        // 2. 镜像翻转
        for(int row=0;row<matrix.size();row++)
        {
            for(int column=0;column<matrix.size()/2;column++){
                swap(matrix[row][column],matrix[row][matrix.size()-column-1]);
                // swap(matrix[0][0],matrix[0][2])
                // swap(1,7)

                // swap(matrix[1][0],matrix[1][2])
                // swap(8,2)

                // swap(matrix[2][0],matrix[2][2])
                // swap(3,9)

//                cout << "第" << i << "次循环结束：" << endl;
//                this->printArray(matrix);
//                cout << "-----------------" << endl;
//                i++;
            }
        }
    }

    void printArray(vector<vector<int> > matrix){
        for (int i = 0; i < matrix.size(); i++) {
            for (int j = 0; j < matrix[0].size(); ++j) {
                cout << matrix[i][j] << "\t";
            }
            cout << endl;
        }
    }
};

int main(){
    vector<vector<int> > matrix = {{1,2,3},{4,5,6},{7,8,9}};

    Solution s;
    s.printArray(matrix);
    cout << "-----------------" << endl;
    s.rotate(matrix);

    s.printArray(matrix);
}